Remote computing systems can enable users to remotely access hosted resources. Servers on remote computing systems can execute programs and transmit signals for providing a user interface on client devices that establish communications with the servers over a network. The network may conform to communication protocols such as the TCP/IP protocol. Each connected client device may be provided with a remote presentation session such as an execution environment that provides a set of resources. Each client can transmit data indicative of user input to the server, and in response, the server can apply the user input to the appropriate session. The client devices may use remote streaming and/or presentation protocols such as the remote desktop protocol (RDP) or remote frame buffer protocol (RFB) to remotely access resources provided by the server.
Hardware virtualization refers to the creation of a virtual machine that remotely access resources of a server computer with an operating system (OS). Software executed on these virtual machines can separated from the underlying hardware resources. In such arrangements, a server system refers to the physical computer on which virtualization takes place, and client devices that remotely accesses resources of the server system are referred to as client devices. Hardware virtualization may include full virtualization, where complete simulation of actual hardware is allowed to run unmodified, partial virtualization, where some but not all of the target environment attributes are simulated, and para-virtualization, where a hardware environment is not simulated but some guest programs are executed in their own isolated domains as they are running on a separate system.